package ms.unicorn.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import ms.unicorn.services.EIstarGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalEIstarParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'situation'", "';'", "'include'", "'import'", "'evolution'", "'model'", "':'", "'on'", "'{'", "'}'", "'rule'", "'branch'", "'probability'", "'add'", "'+'", "'actor'", "','", "'goal'", "'remove'", "'-'", "'submodel'", "'*'", "'text'", "'.'", "'.*'", "':='", "'->'", "'owns'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__36=36;
    public static final int T__17=17;
    public static final int T__37=37;
    public static final int T__12=12;
    public static final int T__38=38;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalEIstarParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalEIstarParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalEIstarParser.tokenNames; }
    public String getGrammarFileName() { return "../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g"; }



     	private EIstarGrammarAccess grammarAccess;
     	
        public InternalEIstarParser(TokenStream input, EIstarGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Situation";	
       	}
       	
       	@Override
       	protected EIstarGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleSituation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:68:1: entryRuleSituation returns [EObject current=null] : iv_ruleSituation= ruleSituation EOF ;
    public final EObject entryRuleSituation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSituation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:69:2: (iv_ruleSituation= ruleSituation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:70:2: iv_ruleSituation= ruleSituation EOF
            {
             newCompositeNode(grammarAccess.getSituationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleSituation_in_entryRuleSituation75);
            iv_ruleSituation=ruleSituation();

            state._fsp--;

             current =iv_ruleSituation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSituation85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSituation"


    // $ANTLR start "ruleSituation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:77:1: ruleSituation returns [EObject current=null] : (otherlv_0= 'situation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ';' ( (lv_includes_3_0= ruleIncludeSituation ) )* ( (lv_imports_4_0= ruleImportNamespace ) )* ( (lv_children_5_0= ruleModel ) )* ) ;
    public final EObject ruleSituation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_includes_3_0 = null;

        EObject lv_imports_4_0 = null;

        EObject lv_children_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:80:28: ( (otherlv_0= 'situation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ';' ( (lv_includes_3_0= ruleIncludeSituation ) )* ( (lv_imports_4_0= ruleImportNamespace ) )* ( (lv_children_5_0= ruleModel ) )* ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:81:1: (otherlv_0= 'situation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ';' ( (lv_includes_3_0= ruleIncludeSituation ) )* ( (lv_imports_4_0= ruleImportNamespace ) )* ( (lv_children_5_0= ruleModel ) )* )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:81:1: (otherlv_0= 'situation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ';' ( (lv_includes_3_0= ruleIncludeSituation ) )* ( (lv_imports_4_0= ruleImportNamespace ) )* ( (lv_children_5_0= ruleModel ) )* )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:81:3: otherlv_0= 'situation' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ';' ( (lv_includes_3_0= ruleIncludeSituation ) )* ( (lv_imports_4_0= ruleImportNamespace ) )* ( (lv_children_5_0= ruleModel ) )*
            {
            otherlv_0=(Token)match(input,11,FollowSets000.FOLLOW_11_in_ruleSituation122); 

                	newLeafNode(otherlv_0, grammarAccess.getSituationAccess().getSituationKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:85:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:86:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:86:1: (lv_name_1_0= ruleQualifiedName )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:87:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getSituationAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleSituation143);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSituationRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSituation155); 

                	newLeafNode(otherlv_2, grammarAccess.getSituationAccess().getSemicolonKeyword_2());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:107:1: ( (lv_includes_3_0= ruleIncludeSituation ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==13) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:108:1: (lv_includes_3_0= ruleIncludeSituation )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:108:1: (lv_includes_3_0= ruleIncludeSituation )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:109:3: lv_includes_3_0= ruleIncludeSituation
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSituationAccess().getIncludesIncludeSituationParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleIncludeSituation_in_ruleSituation176);
            	    lv_includes_3_0=ruleIncludeSituation();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSituationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"includes",
            	            		lv_includes_3_0, 
            	            		"IncludeSituation");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:125:3: ( (lv_imports_4_0= ruleImportNamespace ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==14) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:126:1: (lv_imports_4_0= ruleImportNamespace )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:126:1: (lv_imports_4_0= ruleImportNamespace )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:127:3: lv_imports_4_0= ruleImportNamespace
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSituationAccess().getImportsImportNamespaceParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleImportNamespace_in_ruleSituation198);
            	    lv_imports_4_0=ruleImportNamespace();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSituationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"imports",
            	            		lv_imports_4_0, 
            	            		"ImportNamespace");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:143:3: ( (lv_children_5_0= ruleModel ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>=15 && LA3_0<=16)||LA3_0==31) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:144:1: (lv_children_5_0= ruleModel )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:144:1: (lv_children_5_0= ruleModel )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:145:3: lv_children_5_0= ruleModel
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSituationAccess().getChildrenModelParserRuleCall_5_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleModel_in_ruleSituation220);
            	    lv_children_5_0=ruleModel();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSituationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_5_0, 
            	            		"Model");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSituation"


    // $ANTLR start "entryRuleModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:169:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:170:2: (iv_ruleModel= ruleModel EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:171:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleModel_in_entryRuleModel257);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleModel267); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:178:1: ruleModel returns [EObject current=null] : (this_RequirementModel_0= ruleRequirementModel | this_EvolutionModel_1= ruleEvolutionModel ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject this_RequirementModel_0 = null;

        EObject this_EvolutionModel_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:181:28: ( (this_RequirementModel_0= ruleRequirementModel | this_EvolutionModel_1= ruleEvolutionModel ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:182:1: (this_RequirementModel_0= ruleRequirementModel | this_EvolutionModel_1= ruleEvolutionModel )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:182:1: (this_RequirementModel_0= ruleRequirementModel | this_EvolutionModel_1= ruleEvolutionModel )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==16||LA4_0==31) ) {
                alt4=1;
            }
            else if ( (LA4_0==15) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:183:5: this_RequirementModel_0= ruleRequirementModel
                    {
                     
                            newCompositeNode(grammarAccess.getModelAccess().getRequirementModelParserRuleCall_0()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleRequirementModel_in_ruleModel314);
                    this_RequirementModel_0=ruleRequirementModel();

                    state._fsp--;

                     
                            current = this_RequirementModel_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:193:5: this_EvolutionModel_1= ruleEvolutionModel
                    {
                     
                            newCompositeNode(grammarAccess.getModelAccess().getEvolutionModelParserRuleCall_1()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleEvolutionModel_in_ruleModel341);
                    this_EvolutionModel_1=ruleEvolutionModel();

                    state._fsp--;

                     
                            current = this_EvolutionModel_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleIncludeSituation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:209:1: entryRuleIncludeSituation returns [EObject current=null] : iv_ruleIncludeSituation= ruleIncludeSituation EOF ;
    public final EObject entryRuleIncludeSituation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIncludeSituation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:210:2: (iv_ruleIncludeSituation= ruleIncludeSituation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:211:2: iv_ruleIncludeSituation= ruleIncludeSituation EOF
            {
             newCompositeNode(grammarAccess.getIncludeSituationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleIncludeSituation_in_entryRuleIncludeSituation376);
            iv_ruleIncludeSituation=ruleIncludeSituation();

            state._fsp--;

             current =iv_ruleIncludeSituation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIncludeSituation386); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIncludeSituation"


    // $ANTLR start "ruleIncludeSituation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:218:1: ruleIncludeSituation returns [EObject current=null] : (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) otherlv_2= ';' ) ;
    public final EObject ruleIncludeSituation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:221:28: ( (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) otherlv_2= ';' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:222:1: (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) otherlv_2= ';' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:222:1: (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) otherlv_2= ';' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:222:3: otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleIncludeSituation423); 

                	newLeafNode(otherlv_0, grammarAccess.getIncludeSituationAccess().getIncludeKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:226:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:227:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:227:1: (lv_importURI_1_0= RULE_STRING )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:228:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleIncludeSituation440); 

            			newLeafNode(lv_importURI_1_0, grammarAccess.getIncludeSituationAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIncludeSituationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"importURI",
                    		lv_importURI_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleIncludeSituation457); 

                	newLeafNode(otherlv_2, grammarAccess.getIncludeSituationAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIncludeSituation"


    // $ANTLR start "entryRuleImportNamespace"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:256:1: entryRuleImportNamespace returns [EObject current=null] : iv_ruleImportNamespace= ruleImportNamespace EOF ;
    public final EObject entryRuleImportNamespace() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportNamespace = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:257:2: (iv_ruleImportNamespace= ruleImportNamespace EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:258:2: iv_ruleImportNamespace= ruleImportNamespace EOF
            {
             newCompositeNode(grammarAccess.getImportNamespaceRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleImportNamespace_in_entryRuleImportNamespace493);
            iv_ruleImportNamespace=ruleImportNamespace();

            state._fsp--;

             current =iv_ruleImportNamespace; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImportNamespace503); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportNamespace"


    // $ANTLR start "ruleImportNamespace"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:265:1: ruleImportNamespace returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) otherlv_2= ';' ) ;
    public final EObject ruleImportNamespace() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:268:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) otherlv_2= ';' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:269:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) otherlv_2= ';' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:269:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) otherlv_2= ';' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:269:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleImportNamespace540); 

                	newLeafNode(otherlv_0, grammarAccess.getImportNamespaceAccess().getImportKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:273:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:274:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:274:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:275:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard
            {
             
            	        newCompositeNode(grammarAccess.getImportNamespaceAccess().getImportedNamespaceQualifiedNameWithWildCardParserRuleCall_1_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedNameWithWildCard_in_ruleImportNamespace561);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildCard();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportNamespaceRule());
            	        }
                   		set(
                   			current, 
                   			"importedNamespace",
                    		lv_importedNamespace_1_0, 
                    		"QualifiedNameWithWildCard");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleImportNamespace573); 

                	newLeafNode(otherlv_2, grammarAccess.getImportNamespaceAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportNamespace"


    // $ANTLR start "entryRuleEvolutionModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:303:1: entryRuleEvolutionModel returns [EObject current=null] : iv_ruleEvolutionModel= ruleEvolutionModel EOF ;
    public final EObject entryRuleEvolutionModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvolutionModel = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:304:2: (iv_ruleEvolutionModel= ruleEvolutionModel EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:305:2: iv_ruleEvolutionModel= ruleEvolutionModel EOF
            {
             newCompositeNode(grammarAccess.getEvolutionModelRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEvolutionModel_in_entryRuleEvolutionModel609);
            iv_ruleEvolutionModel=ruleEvolutionModel();

            state._fsp--;

             current =iv_ruleEvolutionModel; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvolutionModel619); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvolutionModel"


    // $ANTLR start "ruleEvolutionModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:312:1: ruleEvolutionModel returns [EObject current=null] : (otherlv_0= 'evolution' otherlv_1= 'model' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) ) )? otherlv_5= 'on' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_children_8_0= ruleEvolutionRule ) )* otherlv_9= '}' ) ;
    public final EObject ruleEvolutionModel() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_text_4_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        EObject lv_children_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:315:28: ( (otherlv_0= 'evolution' otherlv_1= 'model' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) ) )? otherlv_5= 'on' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_children_8_0= ruleEvolutionRule ) )* otherlv_9= '}' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:316:1: (otherlv_0= 'evolution' otherlv_1= 'model' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) ) )? otherlv_5= 'on' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_children_8_0= ruleEvolutionRule ) )* otherlv_9= '}' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:316:1: (otherlv_0= 'evolution' otherlv_1= 'model' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) ) )? otherlv_5= 'on' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_children_8_0= ruleEvolutionRule ) )* otherlv_9= '}' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:316:3: otherlv_0= 'evolution' otherlv_1= 'model' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) ) )? otherlv_5= 'on' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_children_8_0= ruleEvolutionRule ) )* otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleEvolutionModel656); 

                	newLeafNode(otherlv_0, grammarAccess.getEvolutionModelAccess().getEvolutionKeyword_0());
                
            otherlv_1=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleEvolutionModel668); 

                	newLeafNode(otherlv_1, grammarAccess.getEvolutionModelAccess().getModelKeyword_1());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:324:1: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:325:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:325:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:326:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleEvolutionModel685); 

            			newLeafNode(lv_name_2_0, grammarAccess.getEvolutionModelAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEvolutionModelRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:342:2: (otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==17) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:342:4: otherlv_3= ':' ( (lv_text_4_0= RULE_STRING ) )
                    {
                    otherlv_3=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleEvolutionModel703); 

                        	newLeafNode(otherlv_3, grammarAccess.getEvolutionModelAccess().getColonKeyword_3_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:346:1: ( (lv_text_4_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:347:1: (lv_text_4_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:347:1: (lv_text_4_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:348:3: lv_text_4_0= RULE_STRING
                    {
                    lv_text_4_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleEvolutionModel720); 

                    			newLeafNode(lv_text_4_0, grammarAccess.getEvolutionModelAccess().getTextSTRINGTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEvolutionModelRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_4_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleEvolutionModel739); 

                	newLeafNode(otherlv_5, grammarAccess.getEvolutionModelAccess().getOnKeyword_4());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:368:1: ( (otherlv_6= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:369:1: (otherlv_6= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:369:1: (otherlv_6= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:370:3: otherlv_6= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getEvolutionModelRule());
            	        }
                    
            otherlv_6=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleEvolutionModel759); 

            		newLeafNode(otherlv_6, grammarAccess.getEvolutionModelAccess().getModelModelCrossReference_5_0()); 
            	

            }


            }

            otherlv_7=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleEvolutionModel771); 

                	newLeafNode(otherlv_7, grammarAccess.getEvolutionModelAccess().getLeftCurlyBracketKeyword_6());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:385:1: ( (lv_children_8_0= ruleEvolutionRule ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==21) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:386:1: (lv_children_8_0= ruleEvolutionRule )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:386:1: (lv_children_8_0= ruleEvolutionRule )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:387:3: lv_children_8_0= ruleEvolutionRule
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEvolutionModelAccess().getChildrenEvolutionRuleParserRuleCall_7_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleEvolutionRule_in_ruleEvolutionModel792);
            	    lv_children_8_0=ruleEvolutionRule();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEvolutionModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_8_0, 
            	            		"EvolutionRule");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            otherlv_9=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleEvolutionModel805); 

                	newLeafNode(otherlv_9, grammarAccess.getEvolutionModelAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvolutionModel"


    // $ANTLR start "entryRuleEvolutionRule"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:415:1: entryRuleEvolutionRule returns [EObject current=null] : iv_ruleEvolutionRule= ruleEvolutionRule EOF ;
    public final EObject entryRuleEvolutionRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvolutionRule = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:416:2: (iv_ruleEvolutionRule= ruleEvolutionRule EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:417:2: iv_ruleEvolutionRule= ruleEvolutionRule EOF
            {
             newCompositeNode(grammarAccess.getEvolutionRuleRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEvolutionRule_in_entryRuleEvolutionRule841);
            iv_ruleEvolutionRule=ruleEvolutionRule();

            state._fsp--;

             current =iv_ruleEvolutionRule; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvolutionRule851); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvolutionRule"


    // $ANTLR start "ruleEvolutionRule"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:424:1: ruleEvolutionRule returns [EObject current=null] : (otherlv_0= 'rule' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( ( ruleQualifiedName ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* ( (lv_children_8_0= ruleEvolutionBranch ) )* otherlv_9= '}' ) ;
    public final EObject ruleEvolutionRule() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_text_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_9=null;
        EObject lv_imports_7_0 = null;

        EObject lv_children_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:427:28: ( (otherlv_0= 'rule' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( ( ruleQualifiedName ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* ( (lv_children_8_0= ruleEvolutionBranch ) )* otherlv_9= '}' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:428:1: (otherlv_0= 'rule' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( ( ruleQualifiedName ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* ( (lv_children_8_0= ruleEvolutionBranch ) )* otherlv_9= '}' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:428:1: (otherlv_0= 'rule' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( ( ruleQualifiedName ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* ( (lv_children_8_0= ruleEvolutionBranch ) )* otherlv_9= '}' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:428:3: otherlv_0= 'rule' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( ( ruleQualifiedName ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* ( (lv_children_8_0= ruleEvolutionBranch ) )* otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleEvolutionRule888); 

                	newLeafNode(otherlv_0, grammarAccess.getEvolutionRuleAccess().getRuleKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:432:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:433:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:433:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:434:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleEvolutionRule905); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEvolutionRuleAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEvolutionRuleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:450:2: (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==17) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:450:4: otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) )
                    {
                    otherlv_2=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleEvolutionRule923); 

                        	newLeafNode(otherlv_2, grammarAccess.getEvolutionRuleAccess().getColonKeyword_2_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:454:1: ( (lv_text_3_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:455:1: (lv_text_3_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:455:1: (lv_text_3_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:456:3: lv_text_3_0= RULE_STRING
                    {
                    lv_text_3_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleEvolutionRule940); 

                    			newLeafNode(lv_text_3_0, grammarAccess.getEvolutionRuleAccess().getTextSTRINGTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEvolutionRuleRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_3_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleEvolutionRule959); 

                	newLeafNode(otherlv_4, grammarAccess.getEvolutionRuleAccess().getOnKeyword_3());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:476:1: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:477:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:477:1: ( ruleQualifiedName )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:478:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getEvolutionRuleRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getEvolutionRuleAccess().getOriginalModelCrossReference_4_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleEvolutionRule982);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleEvolutionRule994); 

                	newLeafNode(otherlv_6, grammarAccess.getEvolutionRuleAccess().getLeftCurlyBracketKeyword_5());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:495:1: ( (lv_imports_7_0= ruleImportNamespace ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==14) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:496:1: (lv_imports_7_0= ruleImportNamespace )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:496:1: (lv_imports_7_0= ruleImportNamespace )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:497:3: lv_imports_7_0= ruleImportNamespace
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEvolutionRuleAccess().getImportsImportNamespaceParserRuleCall_6_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleImportNamespace_in_ruleEvolutionRule1015);
            	    lv_imports_7_0=ruleImportNamespace();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEvolutionRuleRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"imports",
            	            		lv_imports_7_0, 
            	            		"ImportNamespace");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:513:3: ( (lv_children_8_0= ruleEvolutionBranch ) )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==22) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:514:1: (lv_children_8_0= ruleEvolutionBranch )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:514:1: (lv_children_8_0= ruleEvolutionBranch )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:515:3: lv_children_8_0= ruleEvolutionBranch
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEvolutionRuleAccess().getChildrenEvolutionBranchParserRuleCall_7_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleEvolutionBranch_in_ruleEvolutionRule1037);
            	    lv_children_8_0=ruleEvolutionBranch();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEvolutionRuleRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_8_0, 
            	            		"EvolutionBranch");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            otherlv_9=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleEvolutionRule1050); 

                	newLeafNode(otherlv_9, grammarAccess.getEvolutionRuleAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvolutionRule"


    // $ANTLR start "entryRuleEvolutionBranch"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:543:1: entryRuleEvolutionBranch returns [EObject current=null] : iv_ruleEvolutionBranch= ruleEvolutionBranch EOF ;
    public final EObject entryRuleEvolutionBranch() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvolutionBranch = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:544:2: (iv_ruleEvolutionBranch= ruleEvolutionBranch EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:545:2: iv_ruleEvolutionBranch= ruleEvolutionBranch EOF
            {
             newCompositeNode(grammarAccess.getEvolutionBranchRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEvolutionBranch_in_entryRuleEvolutionBranch1086);
            iv_ruleEvolutionBranch=ruleEvolutionBranch();

            state._fsp--;

             current =iv_ruleEvolutionBranch; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvolutionBranch1096); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvolutionBranch"


    // $ANTLR start "ruleEvolutionBranch"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:552:1: ruleEvolutionBranch returns [EObject current=null] : (otherlv_0= 'branch' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'probability' ( (lv_probability_3_0= RULE_INT ) ) otherlv_4= '{' ( (lv_children_5_0= ruleEvolutionOperation ) )* otherlv_6= '}' ) ;
    public final EObject ruleEvolutionBranch() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_probability_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_children_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:555:28: ( (otherlv_0= 'branch' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'probability' ( (lv_probability_3_0= RULE_INT ) ) otherlv_4= '{' ( (lv_children_5_0= ruleEvolutionOperation ) )* otherlv_6= '}' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:556:1: (otherlv_0= 'branch' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'probability' ( (lv_probability_3_0= RULE_INT ) ) otherlv_4= '{' ( (lv_children_5_0= ruleEvolutionOperation ) )* otherlv_6= '}' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:556:1: (otherlv_0= 'branch' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'probability' ( (lv_probability_3_0= RULE_INT ) ) otherlv_4= '{' ( (lv_children_5_0= ruleEvolutionOperation ) )* otherlv_6= '}' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:556:3: otherlv_0= 'branch' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'probability' ( (lv_probability_3_0= RULE_INT ) ) otherlv_4= '{' ( (lv_children_5_0= ruleEvolutionOperation ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleEvolutionBranch1133); 

                	newLeafNode(otherlv_0, grammarAccess.getEvolutionBranchAccess().getBranchKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:560:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:561:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:561:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:562:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleEvolutionBranch1150); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEvolutionBranchAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEvolutionBranchRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleEvolutionBranch1167); 

                	newLeafNode(otherlv_2, grammarAccess.getEvolutionBranchAccess().getProbabilityKeyword_2());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:582:1: ( (lv_probability_3_0= RULE_INT ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:583:1: (lv_probability_3_0= RULE_INT )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:583:1: (lv_probability_3_0= RULE_INT )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:584:3: lv_probability_3_0= RULE_INT
            {
            lv_probability_3_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleEvolutionBranch1184); 

            			newLeafNode(lv_probability_3_0, grammarAccess.getEvolutionBranchAccess().getProbabilityINTTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEvolutionBranchRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"probability",
                    		lv_probability_3_0, 
                    		"INT");
            	    

            }


            }

            otherlv_4=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleEvolutionBranch1201); 

                	newLeafNode(otherlv_4, grammarAccess.getEvolutionBranchAccess().getLeftCurlyBracketKeyword_4());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:604:1: ( (lv_children_5_0= ruleEvolutionOperation ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>=24 && LA10_0<=25)||(LA10_0>=29 && LA10_0<=30)) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:605:1: (lv_children_5_0= ruleEvolutionOperation )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:605:1: (lv_children_5_0= ruleEvolutionOperation )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:606:3: lv_children_5_0= ruleEvolutionOperation
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEvolutionBranchAccess().getChildrenEvolutionOperationParserRuleCall_5_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleEvolutionOperation_in_ruleEvolutionBranch1222);
            	    lv_children_5_0=ruleEvolutionOperation();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEvolutionBranchRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_5_0, 
            	            		"EvolutionOperation");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

            otherlv_6=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleEvolutionBranch1235); 

                	newLeafNode(otherlv_6, grammarAccess.getEvolutionBranchAccess().getRightCurlyBracketKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvolutionBranch"


    // $ANTLR start "entryRuleEvolutionOperation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:634:1: entryRuleEvolutionOperation returns [EObject current=null] : iv_ruleEvolutionOperation= ruleEvolutionOperation EOF ;
    public final EObject entryRuleEvolutionOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvolutionOperation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:635:2: (iv_ruleEvolutionOperation= ruleEvolutionOperation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:636:2: iv_ruleEvolutionOperation= ruleEvolutionOperation EOF
            {
             newCompositeNode(grammarAccess.getEvolutionOperationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEvolutionOperation_in_entryRuleEvolutionOperation1271);
            iv_ruleEvolutionOperation=ruleEvolutionOperation();

            state._fsp--;

             current =iv_ruleEvolutionOperation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvolutionOperation1281); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvolutionOperation"


    // $ANTLR start "ruleEvolutionOperation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:643:1: ruleEvolutionOperation returns [EObject current=null] : ( (this_EvolutionAddOperation_0= ruleEvolutionAddOperation | this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation ) otherlv_2= ';' ) ;
    public final EObject ruleEvolutionOperation() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_EvolutionAddOperation_0 = null;

        EObject this_EvolutionRemoveOperation_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:646:28: ( ( (this_EvolutionAddOperation_0= ruleEvolutionAddOperation | this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation ) otherlv_2= ';' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:647:1: ( (this_EvolutionAddOperation_0= ruleEvolutionAddOperation | this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation ) otherlv_2= ';' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:647:1: ( (this_EvolutionAddOperation_0= ruleEvolutionAddOperation | this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation ) otherlv_2= ';' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:647:2: (this_EvolutionAddOperation_0= ruleEvolutionAddOperation | this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation ) otherlv_2= ';'
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:647:2: (this_EvolutionAddOperation_0= ruleEvolutionAddOperation | this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( ((LA11_0>=24 && LA11_0<=25)) ) {
                alt11=1;
            }
            else if ( ((LA11_0>=29 && LA11_0<=30)) ) {
                alt11=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:648:5: this_EvolutionAddOperation_0= ruleEvolutionAddOperation
                    {
                     
                            newCompositeNode(grammarAccess.getEvolutionOperationAccess().getEvolutionAddOperationParserRuleCall_0_0()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleEvolutionAddOperation_in_ruleEvolutionOperation1329);
                    this_EvolutionAddOperation_0=ruleEvolutionAddOperation();

                    state._fsp--;

                     
                            current = this_EvolutionAddOperation_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:658:5: this_EvolutionRemoveOperation_1= ruleEvolutionRemoveOperation
                    {
                     
                            newCompositeNode(grammarAccess.getEvolutionOperationAccess().getEvolutionRemoveOperationParserRuleCall_0_1()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleEvolutionRemoveOperation_in_ruleEvolutionOperation1356);
                    this_EvolutionRemoveOperation_1=ruleEvolutionRemoveOperation();

                    state._fsp--;

                     
                            current = this_EvolutionRemoveOperation_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            otherlv_2=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleEvolutionOperation1368); 

                	newLeafNode(otherlv_2, grammarAccess.getEvolutionOperationAccess().getSemicolonKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvolutionOperation"


    // $ANTLR start "entryRuleEvolutionAddOperation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:678:1: entryRuleEvolutionAddOperation returns [EObject current=null] : iv_ruleEvolutionAddOperation= ruleEvolutionAddOperation EOF ;
    public final EObject entryRuleEvolutionAddOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvolutionAddOperation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:679:2: (iv_ruleEvolutionAddOperation= ruleEvolutionAddOperation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:680:2: iv_ruleEvolutionAddOperation= ruleEvolutionAddOperation EOF
            {
             newCompositeNode(grammarAccess.getEvolutionAddOperationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEvolutionAddOperation_in_entryRuleEvolutionAddOperation1404);
            iv_ruleEvolutionAddOperation=ruleEvolutionAddOperation();

            state._fsp--;

             current =iv_ruleEvolutionAddOperation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvolutionAddOperation1414); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvolutionAddOperation"


    // $ANTLR start "ruleEvolutionAddOperation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:687:1: ruleEvolutionAddOperation returns [EObject current=null] : ( (otherlv_0= 'add' | otherlv_1= '+' ) ( (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* ) | (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* ) | ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* ) ) ) ;
    public final EObject ruleEvolutionAddOperation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_11=null;
        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;

        EObject lv_children_7_0 = null;

        EObject lv_children_9_0 = null;

        EObject lv_children_10_0 = null;

        EObject lv_children_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:690:28: ( ( (otherlv_0= 'add' | otherlv_1= '+' ) ( (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* ) | (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* ) | ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* ) ) ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:691:1: ( (otherlv_0= 'add' | otherlv_1= '+' ) ( (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* ) | (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* ) | ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* ) ) )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:691:1: ( (otherlv_0= 'add' | otherlv_1= '+' ) ( (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* ) | (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* ) | ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* ) ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:691:2: (otherlv_0= 'add' | otherlv_1= '+' ) ( (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* ) | (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* ) | ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* ) )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:691:2: (otherlv_0= 'add' | otherlv_1= '+' )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==24) ) {
                alt12=1;
            }
            else if ( (LA12_0==25) ) {
                alt12=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:691:4: otherlv_0= 'add'
                    {
                    otherlv_0=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleEvolutionAddOperation1452); 

                        	newLeafNode(otherlv_0, grammarAccess.getEvolutionAddOperationAccess().getAddKeyword_0_0());
                        

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:696:7: otherlv_1= '+'
                    {
                    otherlv_1=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleEvolutionAddOperation1470); 

                        	newLeafNode(otherlv_1, grammarAccess.getEvolutionAddOperationAccess().getPlusSignKeyword_0_1());
                        

                    }
                    break;

            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:700:2: ( (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* ) | (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* ) | ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* ) )
            int alt16=3;
            switch ( input.LA(1) ) {
            case 26:
                {
                alt16=1;
                }
                break;
            case 28:
                {
                alt16=2;
                }
                break;
            case RULE_ID:
                {
                alt16=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }

            switch (alt16) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:700:3: (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:700:3: (otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )* )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:700:5: otherlv_2= 'actor' ( (lv_children_3_0= ruleActorDeclaration ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )*
                    {
                    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleEvolutionAddOperation1485); 

                        	newLeafNode(otherlv_2, grammarAccess.getEvolutionAddOperationAccess().getActorKeyword_1_0_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:704:1: ( (lv_children_3_0= ruleActorDeclaration ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:705:1: (lv_children_3_0= ruleActorDeclaration )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:705:1: (lv_children_3_0= ruleActorDeclaration )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:706:3: lv_children_3_0= ruleActorDeclaration
                    {
                     
                    	        newCompositeNode(grammarAccess.getEvolutionAddOperationAccess().getChildrenActorDeclarationParserRuleCall_1_0_1_0()); 
                    	    
                    pushFollow(FollowSets000.FOLLOW_ruleActorDeclaration_in_ruleEvolutionAddOperation1506);
                    lv_children_3_0=ruleActorDeclaration();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getEvolutionAddOperationRule());
                    	        }
                           		add(
                           			current, 
                           			"children",
                            		lv_children_3_0, 
                            		"ActorDeclaration");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:722:2: (otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) ) )*
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==27) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:722:4: otherlv_4= ',' ( (lv_children_5_0= ruleActorDeclaration ) )
                    	    {
                    	    otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleEvolutionAddOperation1519); 

                    	        	newLeafNode(otherlv_4, grammarAccess.getEvolutionAddOperationAccess().getCommaKeyword_1_0_2_0());
                    	        
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:726:1: ( (lv_children_5_0= ruleActorDeclaration ) )
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:727:1: (lv_children_5_0= ruleActorDeclaration )
                    	    {
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:727:1: (lv_children_5_0= ruleActorDeclaration )
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:728:3: lv_children_5_0= ruleActorDeclaration
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getEvolutionAddOperationAccess().getChildrenActorDeclarationParserRuleCall_1_0_2_1_0()); 
                    	    	    
                    	    pushFollow(FollowSets000.FOLLOW_ruleActorDeclaration_in_ruleEvolutionAddOperation1540);
                    	    lv_children_5_0=ruleActorDeclaration();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getEvolutionAddOperationRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"children",
                    	            		lv_children_5_0, 
                    	            		"ActorDeclaration");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop13;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:745:6: (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:745:6: (otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )* )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:745:8: otherlv_6= 'goal' ( (lv_children_7_0= ruleGoalDeclaration ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )*
                    {
                    otherlv_6=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleEvolutionAddOperation1562); 

                        	newLeafNode(otherlv_6, grammarAccess.getEvolutionAddOperationAccess().getGoalKeyword_1_1_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:749:1: ( (lv_children_7_0= ruleGoalDeclaration ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:750:1: (lv_children_7_0= ruleGoalDeclaration )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:750:1: (lv_children_7_0= ruleGoalDeclaration )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:751:3: lv_children_7_0= ruleGoalDeclaration
                    {
                     
                    	        newCompositeNode(grammarAccess.getEvolutionAddOperationAccess().getChildrenGoalDeclarationParserRuleCall_1_1_1_0()); 
                    	    
                    pushFollow(FollowSets000.FOLLOW_ruleGoalDeclaration_in_ruleEvolutionAddOperation1583);
                    lv_children_7_0=ruleGoalDeclaration();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getEvolutionAddOperationRule());
                    	        }
                           		add(
                           			current, 
                           			"children",
                            		lv_children_7_0, 
                            		"GoalDeclaration");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:767:2: (otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) ) )*
                    loop14:
                    do {
                        int alt14=2;
                        int LA14_0 = input.LA(1);

                        if ( (LA14_0==27) ) {
                            alt14=1;
                        }


                        switch (alt14) {
                    	case 1 :
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:767:4: otherlv_8= ',' ( (lv_children_9_0= ruleGoalDeclaration ) )
                    	    {
                    	    otherlv_8=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleEvolutionAddOperation1596); 

                    	        	newLeafNode(otherlv_8, grammarAccess.getEvolutionAddOperationAccess().getCommaKeyword_1_1_2_0());
                    	        
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:771:1: ( (lv_children_9_0= ruleGoalDeclaration ) )
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:772:1: (lv_children_9_0= ruleGoalDeclaration )
                    	    {
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:772:1: (lv_children_9_0= ruleGoalDeclaration )
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:773:3: lv_children_9_0= ruleGoalDeclaration
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getEvolutionAddOperationAccess().getChildrenGoalDeclarationParserRuleCall_1_1_2_1_0()); 
                    	    	    
                    	    pushFollow(FollowSets000.FOLLOW_ruleGoalDeclaration_in_ruleEvolutionAddOperation1617);
                    	    lv_children_9_0=ruleGoalDeclaration();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getEvolutionAddOperationRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"children",
                    	            		lv_children_9_0, 
                    	            		"GoalDeclaration");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop14;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 3 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:790:6: ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:790:6: ( ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )* )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:790:7: ( (lv_children_10_0= ruleRelationDeclaration ) ) (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )*
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:790:7: ( (lv_children_10_0= ruleRelationDeclaration ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:791:1: (lv_children_10_0= ruleRelationDeclaration )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:791:1: (lv_children_10_0= ruleRelationDeclaration )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:792:3: lv_children_10_0= ruleRelationDeclaration
                    {
                     
                    	        newCompositeNode(grammarAccess.getEvolutionAddOperationAccess().getChildrenRelationDeclarationParserRuleCall_1_2_0_0()); 
                    	    
                    pushFollow(FollowSets000.FOLLOW_ruleRelationDeclaration_in_ruleEvolutionAddOperation1648);
                    lv_children_10_0=ruleRelationDeclaration();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getEvolutionAddOperationRule());
                    	        }
                           		add(
                           			current, 
                           			"children",
                            		lv_children_10_0, 
                            		"RelationDeclaration");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:808:2: (otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) ) )*
                    loop15:
                    do {
                        int alt15=2;
                        int LA15_0 = input.LA(1);

                        if ( (LA15_0==27) ) {
                            alt15=1;
                        }


                        switch (alt15) {
                    	case 1 :
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:808:4: otherlv_11= ',' ( (lv_children_12_0= ruleRelationDeclaration ) )
                    	    {
                    	    otherlv_11=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleEvolutionAddOperation1661); 

                    	        	newLeafNode(otherlv_11, grammarAccess.getEvolutionAddOperationAccess().getCommaKeyword_1_2_1_0());
                    	        
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:812:1: ( (lv_children_12_0= ruleRelationDeclaration ) )
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:813:1: (lv_children_12_0= ruleRelationDeclaration )
                    	    {
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:813:1: (lv_children_12_0= ruleRelationDeclaration )
                    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:814:3: lv_children_12_0= ruleRelationDeclaration
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getEvolutionAddOperationAccess().getChildrenRelationDeclarationParserRuleCall_1_2_1_1_0()); 
                    	    	    
                    	    pushFollow(FollowSets000.FOLLOW_ruleRelationDeclaration_in_ruleEvolutionAddOperation1682);
                    	    lv_children_12_0=ruleRelationDeclaration();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getEvolutionAddOperationRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"children",
                    	            		lv_children_12_0, 
                    	            		"RelationDeclaration");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop15;
                        }
                    } while (true);


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvolutionAddOperation"


    // $ANTLR start "entryRuleEvolutionRemoveOperation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:838:1: entryRuleEvolutionRemoveOperation returns [EObject current=null] : iv_ruleEvolutionRemoveOperation= ruleEvolutionRemoveOperation EOF ;
    public final EObject entryRuleEvolutionRemoveOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvolutionRemoveOperation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:839:2: (iv_ruleEvolutionRemoveOperation= ruleEvolutionRemoveOperation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:840:2: iv_ruleEvolutionRemoveOperation= ruleEvolutionRemoveOperation EOF
            {
             newCompositeNode(grammarAccess.getEvolutionRemoveOperationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleEvolutionRemoveOperation_in_entryRuleEvolutionRemoveOperation1722);
            iv_ruleEvolutionRemoveOperation=ruleEvolutionRemoveOperation();

            state._fsp--;

             current =iv_ruleEvolutionRemoveOperation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEvolutionRemoveOperation1732); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvolutionRemoveOperation"


    // $ANTLR start "ruleEvolutionRemoveOperation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:847:1: ruleEvolutionRemoveOperation returns [EObject current=null] : ( (otherlv_0= 'remove' | otherlv_1= '-' ) ( ( ( ruleQualifiedName ) ) | ( (lv_children_3_0= ruleRelationDeclaration ) ) ) (otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) ) )* ) ;
    public final EObject ruleEvolutionRemoveOperation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_4=null;
        EObject lv_children_3_0 = null;

        EObject lv_children_6_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:850:28: ( ( (otherlv_0= 'remove' | otherlv_1= '-' ) ( ( ( ruleQualifiedName ) ) | ( (lv_children_3_0= ruleRelationDeclaration ) ) ) (otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) ) )* ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:851:1: ( (otherlv_0= 'remove' | otherlv_1= '-' ) ( ( ( ruleQualifiedName ) ) | ( (lv_children_3_0= ruleRelationDeclaration ) ) ) (otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) ) )* )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:851:1: ( (otherlv_0= 'remove' | otherlv_1= '-' ) ( ( ( ruleQualifiedName ) ) | ( (lv_children_3_0= ruleRelationDeclaration ) ) ) (otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) ) )* )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:851:2: (otherlv_0= 'remove' | otherlv_1= '-' ) ( ( ( ruleQualifiedName ) ) | ( (lv_children_3_0= ruleRelationDeclaration ) ) ) (otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) ) )*
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:851:2: (otherlv_0= 'remove' | otherlv_1= '-' )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==29) ) {
                alt17=1;
            }
            else if ( (LA17_0==30) ) {
                alt17=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:851:4: otherlv_0= 'remove'
                    {
                    otherlv_0=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleEvolutionRemoveOperation1770); 

                        	newLeafNode(otherlv_0, grammarAccess.getEvolutionRemoveOperationAccess().getRemoveKeyword_0_0());
                        

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:856:7: otherlv_1= '-'
                    {
                    otherlv_1=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleEvolutionRemoveOperation1788); 

                        	newLeafNode(otherlv_1, grammarAccess.getEvolutionRemoveOperationAccess().getHyphenMinusKeyword_0_1());
                        

                    }
                    break;

            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:860:2: ( ( ( ruleQualifiedName ) ) | ( (lv_children_3_0= ruleRelationDeclaration ) ) )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==RULE_ID) ) {
                int LA18_1 = input.LA(2);

                if ( (LA18_1==EOF||LA18_1==12||LA18_1==27||LA18_1==34) ) {
                    alt18=1;
                }
                else if ( (LA18_1==17||(LA18_1>=36 && LA18_1<=38)) ) {
                    alt18=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 18, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }
            switch (alt18) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:860:3: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:860:3: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:861:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:861:1: ( ruleQualifiedName )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:862:3: ruleQualifiedName
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getEvolutionRemoveOperationRule());
                    	        }
                            
                     
                    	        newCompositeNode(grammarAccess.getEvolutionRemoveOperationAccess().getEntityEntityCrossReference_1_0_0()); 
                    	    
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleEvolutionRemoveOperation1813);
                    ruleQualifiedName();

                    state._fsp--;

                     
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:876:6: ( (lv_children_3_0= ruleRelationDeclaration ) )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:876:6: ( (lv_children_3_0= ruleRelationDeclaration ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:877:1: (lv_children_3_0= ruleRelationDeclaration )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:877:1: (lv_children_3_0= ruleRelationDeclaration )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:878:3: lv_children_3_0= ruleRelationDeclaration
                    {
                     
                    	        newCompositeNode(grammarAccess.getEvolutionRemoveOperationAccess().getChildrenRelationDeclarationParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FollowSets000.FOLLOW_ruleRelationDeclaration_in_ruleEvolutionRemoveOperation1840);
                    lv_children_3_0=ruleRelationDeclaration();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getEvolutionRemoveOperationRule());
                    	        }
                           		add(
                           			current, 
                           			"children",
                            		lv_children_3_0, 
                            		"RelationDeclaration");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:894:3: (otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==27) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:894:5: otherlv_4= ',' ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) )
            	    {
            	    otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleEvolutionRemoveOperation1854); 

            	        	newLeafNode(otherlv_4, grammarAccess.getEvolutionRemoveOperationAccess().getCommaKeyword_2_0());
            	        
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:898:1: ( ( ( ruleQualifiedName ) ) | ( (lv_children_6_0= ruleRelationDeclaration ) ) )
            	    int alt19=2;
            	    int LA19_0 = input.LA(1);

            	    if ( (LA19_0==RULE_ID) ) {
            	        int LA19_1 = input.LA(2);

            	        if ( (LA19_1==17||(LA19_1>=36 && LA19_1<=38)) ) {
            	            alt19=2;
            	        }
            	        else if ( (LA19_1==EOF||LA19_1==12||LA19_1==27||LA19_1==34) ) {
            	            alt19=1;
            	        }
            	        else {
            	            NoViableAltException nvae =
            	                new NoViableAltException("", 19, 1, input);

            	            throw nvae;
            	        }
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 19, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt19) {
            	        case 1 :
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:898:2: ( ( ruleQualifiedName ) )
            	            {
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:898:2: ( ( ruleQualifiedName ) )
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:899:1: ( ruleQualifiedName )
            	            {
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:899:1: ( ruleQualifiedName )
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:900:3: ruleQualifiedName
            	            {

            	            			if (current==null) {
            	            	            current = createModelElement(grammarAccess.getEvolutionRemoveOperationRule());
            	            	        }
            	                    
            	             
            	            	        newCompositeNode(grammarAccess.getEvolutionRemoveOperationAccess().getEntityEntityCrossReference_2_1_0_0()); 
            	            	    
            	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleEvolutionRemoveOperation1878);
            	            ruleQualifiedName();

            	            state._fsp--;

            	             
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:914:6: ( (lv_children_6_0= ruleRelationDeclaration ) )
            	            {
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:914:6: ( (lv_children_6_0= ruleRelationDeclaration ) )
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:915:1: (lv_children_6_0= ruleRelationDeclaration )
            	            {
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:915:1: (lv_children_6_0= ruleRelationDeclaration )
            	            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:916:3: lv_children_6_0= ruleRelationDeclaration
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getEvolutionRemoveOperationAccess().getChildrenRelationDeclarationParserRuleCall_2_1_1_0()); 
            	            	    
            	            pushFollow(FollowSets000.FOLLOW_ruleRelationDeclaration_in_ruleEvolutionRemoveOperation1905);
            	            lv_children_6_0=ruleRelationDeclaration();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getEvolutionRemoveOperationRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"children",
            	                    		lv_children_6_0, 
            	                    		"RelationDeclaration");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvolutionRemoveOperation"


    // $ANTLR start "entryRuleRequirementModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:940:1: entryRuleRequirementModel returns [EObject current=null] : iv_ruleRequirementModel= ruleRequirementModel EOF ;
    public final EObject entryRuleRequirementModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRequirementModel = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:941:2: (iv_ruleRequirementModel= ruleRequirementModel EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:942:2: iv_ruleRequirementModel= ruleRequirementModel EOF
            {
             newCompositeNode(grammarAccess.getRequirementModelRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleRequirementModel_in_entryRuleRequirementModel1944);
            iv_ruleRequirementModel=ruleRequirementModel();

            state._fsp--;

             current =iv_ruleRequirementModel; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRequirementModel1954); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRequirementModel"


    // $ANTLR start "ruleRequirementModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:949:1: ruleRequirementModel returns [EObject current=null] : (this_FullModel_0= ruleFullModel | this_SubModel_1= ruleSubModel ) ;
    public final EObject ruleRequirementModel() throws RecognitionException {
        EObject current = null;

        EObject this_FullModel_0 = null;

        EObject this_SubModel_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:952:28: ( (this_FullModel_0= ruleFullModel | this_SubModel_1= ruleSubModel ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:953:1: (this_FullModel_0= ruleFullModel | this_SubModel_1= ruleSubModel )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:953:1: (this_FullModel_0= ruleFullModel | this_SubModel_1= ruleSubModel )
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==16) ) {
                alt21=1;
            }
            else if ( (LA21_0==31) ) {
                alt21=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 21, 0, input);

                throw nvae;
            }
            switch (alt21) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:954:5: this_FullModel_0= ruleFullModel
                    {
                     
                            newCompositeNode(grammarAccess.getRequirementModelAccess().getFullModelParserRuleCall_0()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleFullModel_in_ruleRequirementModel2001);
                    this_FullModel_0=ruleFullModel();

                    state._fsp--;

                     
                            current = this_FullModel_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:964:5: this_SubModel_1= ruleSubModel
                    {
                     
                            newCompositeNode(grammarAccess.getRequirementModelAccess().getSubModelParserRuleCall_1()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleSubModel_in_ruleRequirementModel2028);
                    this_SubModel_1=ruleSubModel();

                    state._fsp--;

                     
                            current = this_SubModel_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRequirementModel"


    // $ANTLR start "entryRuleSubModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:980:1: entryRuleSubModel returns [EObject current=null] : iv_ruleSubModel= ruleSubModel EOF ;
    public final EObject entryRuleSubModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubModel = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:981:2: (iv_ruleSubModel= ruleSubModel EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:982:2: iv_ruleSubModel= ruleSubModel EOF
            {
             newCompositeNode(grammarAccess.getSubModelRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleSubModel_in_entryRuleSubModel2063);
            iv_ruleSubModel=ruleSubModel();

            state._fsp--;

             current =iv_ruleSubModel; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSubModel2073); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubModel"


    // $ANTLR start "ruleSubModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:989:1: ruleSubModel returns [EObject current=null] : (otherlv_0= 'submodel' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* (otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';' )* otherlv_13= '}' ) ;
    public final EObject ruleSubModel() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_text_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        EObject lv_imports_7_0 = null;

        EObject lv_children_9_0 = null;

        EObject lv_children_11_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:992:28: ( (otherlv_0= 'submodel' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* (otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';' )* otherlv_13= '}' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:993:1: (otherlv_0= 'submodel' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* (otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';' )* otherlv_13= '}' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:993:1: (otherlv_0= 'submodel' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* (otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';' )* otherlv_13= '}' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:993:3: otherlv_0= 'submodel' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= 'on' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_imports_7_0= ruleImportNamespace ) )* (otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';' )* otherlv_13= '}'
            {
            otherlv_0=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleSubModel2110); 

                	newLeafNode(otherlv_0, grammarAccess.getSubModelAccess().getSubmodelKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:997:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:998:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:998:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:999:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleSubModel2127); 

            			newLeafNode(lv_name_1_0, grammarAccess.getSubModelAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSubModelRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1015:2: (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==17) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1015:4: otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) )
                    {
                    otherlv_2=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleSubModel2145); 

                        	newLeafNode(otherlv_2, grammarAccess.getSubModelAccess().getColonKeyword_2_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1019:1: ( (lv_text_3_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1020:1: (lv_text_3_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1020:1: (lv_text_3_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1021:3: lv_text_3_0= RULE_STRING
                    {
                    lv_text_3_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleSubModel2162); 

                    			newLeafNode(lv_text_3_0, grammarAccess.getSubModelAccess().getTextSTRINGTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSubModelRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_3_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleSubModel2181); 

                	newLeafNode(otherlv_4, grammarAccess.getSubModelAccess().getOnKeyword_3());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1041:1: ( (otherlv_5= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1042:1: (otherlv_5= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1042:1: (otherlv_5= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1043:3: otherlv_5= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSubModelRule());
            	        }
                    
            otherlv_5=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleSubModel2201); 

            		newLeafNode(otherlv_5, grammarAccess.getSubModelAccess().getParentModelCrossReference_4_0()); 
            	

            }


            }

            otherlv_6=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleSubModel2213); 

                	newLeafNode(otherlv_6, grammarAccess.getSubModelAccess().getLeftCurlyBracketKeyword_5());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1058:1: ( (lv_imports_7_0= ruleImportNamespace ) )*
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( (LA23_0==14) ) {
                    alt23=1;
                }


                switch (alt23) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1059:1: (lv_imports_7_0= ruleImportNamespace )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1059:1: (lv_imports_7_0= ruleImportNamespace )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1060:3: lv_imports_7_0= ruleImportNamespace
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSubModelAccess().getImportsImportNamespaceParserRuleCall_6_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleImportNamespace_in_ruleSubModel2234);
            	    lv_imports_7_0=ruleImportNamespace();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSubModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"imports",
            	            		lv_imports_7_0, 
            	            		"ImportNamespace");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1076:3: (otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';' )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==13) ) {
                    alt25=1;
                }


                switch (alt25) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1076:5: otherlv_8= 'include' ( (lv_children_9_0= ruleSubModelInclusion ) ) (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )* otherlv_12= ';'
            	    {
            	    otherlv_8=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleSubModel2248); 

            	        	newLeafNode(otherlv_8, grammarAccess.getSubModelAccess().getIncludeKeyword_7_0());
            	        
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1080:1: ( (lv_children_9_0= ruleSubModelInclusion ) )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1081:1: (lv_children_9_0= ruleSubModelInclusion )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1081:1: (lv_children_9_0= ruleSubModelInclusion )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1082:3: lv_children_9_0= ruleSubModelInclusion
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSubModelAccess().getChildrenSubModelInclusionParserRuleCall_7_1_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleSubModelInclusion_in_ruleSubModel2269);
            	    lv_children_9_0=ruleSubModelInclusion();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSubModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_9_0, 
            	            		"SubModelInclusion");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1098:2: (otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) ) )*
            	    loop24:
            	    do {
            	        int alt24=2;
            	        int LA24_0 = input.LA(1);

            	        if ( (LA24_0==27) ) {
            	            alt24=1;
            	        }


            	        switch (alt24) {
            	    	case 1 :
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1098:4: otherlv_10= ',' ( (lv_children_11_0= ruleSubModelInclusion ) )
            	    	    {
            	    	    otherlv_10=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleSubModel2282); 

            	    	        	newLeafNode(otherlv_10, grammarAccess.getSubModelAccess().getCommaKeyword_7_2_0());
            	    	        
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1102:1: ( (lv_children_11_0= ruleSubModelInclusion ) )
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1103:1: (lv_children_11_0= ruleSubModelInclusion )
            	    	    {
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1103:1: (lv_children_11_0= ruleSubModelInclusion )
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1104:3: lv_children_11_0= ruleSubModelInclusion
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getSubModelAccess().getChildrenSubModelInclusionParserRuleCall_7_2_1_0()); 
            	    	    	    
            	    	    pushFollow(FollowSets000.FOLLOW_ruleSubModelInclusion_in_ruleSubModel2303);
            	    	    lv_children_11_0=ruleSubModelInclusion();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getSubModelRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"children",
            	    	            		lv_children_11_0, 
            	    	            		"SubModelInclusion");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop24;
            	        }
            	    } while (true);

            	    otherlv_12=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleSubModel2317); 

            	        	newLeafNode(otherlv_12, grammarAccess.getSubModelAccess().getSemicolonKeyword_7_3());
            	        

            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);

            otherlv_13=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleSubModel2331); 

                	newLeafNode(otherlv_13, grammarAccess.getSubModelAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubModel"


    // $ANTLR start "entryRuleSubModelInclusion"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1136:1: entryRuleSubModelInclusion returns [EObject current=null] : iv_ruleSubModelInclusion= ruleSubModelInclusion EOF ;
    public final EObject entryRuleSubModelInclusion() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubModelInclusion = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1137:2: (iv_ruleSubModelInclusion= ruleSubModelInclusion EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1138:2: iv_ruleSubModelInclusion= ruleSubModelInclusion EOF
            {
             newCompositeNode(grammarAccess.getSubModelInclusionRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleSubModelInclusion_in_entryRuleSubModelInclusion2367);
            iv_ruleSubModelInclusion=ruleSubModelInclusion();

            state._fsp--;

             current =iv_ruleSubModelInclusion; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSubModelInclusion2377); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubModelInclusion"


    // $ANTLR start "ruleSubModelInclusion"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1145:1: ruleSubModelInclusion returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) ) )? ) ;
    public final EObject ruleSubModelInclusion() throws RecognitionException {
        EObject current = null;

        Token lv_closure_1_1=null;
        Token lv_closure_1_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1148:28: ( ( ( ( ruleQualifiedName ) ) ( ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) ) )? ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1149:1: ( ( ( ruleQualifiedName ) ) ( ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) ) )? )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1149:1: ( ( ( ruleQualifiedName ) ) ( ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) ) )? )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1149:2: ( ( ruleQualifiedName ) ) ( ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) ) )?
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1149:2: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1150:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1150:1: ( ruleQualifiedName )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1151:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSubModelInclusionRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getSubModelInclusionAccess().getElementEntityCrossReference_0_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleSubModelInclusion2425);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1164:2: ( ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==25||LA27_0==32) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1165:1: ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1165:1: ( (lv_closure_1_1= '*' | lv_closure_1_2= '+' ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1166:1: (lv_closure_1_1= '*' | lv_closure_1_2= '+' )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1166:1: (lv_closure_1_1= '*' | lv_closure_1_2= '+' )
                    int alt26=2;
                    int LA26_0 = input.LA(1);

                    if ( (LA26_0==32) ) {
                        alt26=1;
                    }
                    else if ( (LA26_0==25) ) {
                        alt26=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 26, 0, input);

                        throw nvae;
                    }
                    switch (alt26) {
                        case 1 :
                            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1167:3: lv_closure_1_1= '*'
                            {
                            lv_closure_1_1=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleSubModelInclusion2445); 

                                    newLeafNode(lv_closure_1_1, grammarAccess.getSubModelInclusionAccess().getClosureAsteriskKeyword_1_0_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getSubModelInclusionRule());
                            	        }
                                   		setWithLastConsumed(current, "closure", lv_closure_1_1, null);
                            	    

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1179:8: lv_closure_1_2= '+'
                            {
                            lv_closure_1_2=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleSubModelInclusion2474); 

                                    newLeafNode(lv_closure_1_2, grammarAccess.getSubModelInclusionAccess().getClosurePlusSignKeyword_1_0_1());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getSubModelInclusionRule());
                            	        }
                                   		setWithLastConsumed(current, "closure", lv_closure_1_2, null);
                            	    

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubModelInclusion"


    // $ANTLR start "entryRuleFullModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1202:1: entryRuleFullModel returns [EObject current=null] : iv_ruleFullModel= ruleFullModel EOF ;
    public final EObject entryRuleFullModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFullModel = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1203:2: (iv_ruleFullModel= ruleFullModel EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1204:2: iv_ruleFullModel= ruleFullModel EOF
            {
             newCompositeNode(grammarAccess.getFullModelRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleFullModel_in_entryRuleFullModel2527);
            iv_ruleFullModel=ruleFullModel();

            state._fsp--;

             current =iv_ruleFullModel; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFullModel2537); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFullModel"


    // $ANTLR start "ruleFullModel"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1211:1: ruleFullModel returns [EObject current=null] : (otherlv_0= 'model' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' ) | (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' ) | ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' ) )* otherlv_17= '}' ) ;
    public final EObject ruleFullModel() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_text_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        EObject lv_children_6_0 = null;

        EObject lv_children_8_0 = null;

        EObject lv_children_11_0 = null;

        EObject lv_children_13_0 = null;

        EObject lv_children_15_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1214:28: ( (otherlv_0= 'model' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' ) | (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' ) | ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' ) )* otherlv_17= '}' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1215:1: (otherlv_0= 'model' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' ) | (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' ) | ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' ) )* otherlv_17= '}' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1215:1: (otherlv_0= 'model' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' ) | (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' ) | ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' ) )* otherlv_17= '}' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1215:3: otherlv_0= 'model' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' ) | (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' ) | ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' ) )* otherlv_17= '}'
            {
            otherlv_0=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleFullModel2574); 

                	newLeafNode(otherlv_0, grammarAccess.getFullModelAccess().getModelKeyword_0());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1219:1: ( (lv_name_1_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1220:1: (lv_name_1_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1220:1: (lv_name_1_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1221:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleFullModel2591); 

            			newLeafNode(lv_name_1_0, grammarAccess.getFullModelAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFullModelRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1237:2: (otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==17) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1237:4: otherlv_2= ':' ( (lv_text_3_0= RULE_STRING ) )
                    {
                    otherlv_2=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleFullModel2609); 

                        	newLeafNode(otherlv_2, grammarAccess.getFullModelAccess().getColonKeyword_2_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1241:1: ( (lv_text_3_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1242:1: (lv_text_3_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1242:1: (lv_text_3_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1243:3: lv_text_3_0= RULE_STRING
                    {
                    lv_text_3_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleFullModel2626); 

                    			newLeafNode(lv_text_3_0, grammarAccess.getFullModelAccess().getTextSTRINGTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFullModelRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_3_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleFullModel2645); 

                	newLeafNode(otherlv_4, grammarAccess.getFullModelAccess().getLeftCurlyBracketKeyword_3());
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1263:1: ( (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' ) | (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' ) | ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' ) )*
            loop31:
            do {
                int alt31=4;
                switch ( input.LA(1) ) {
                case 26:
                    {
                    alt31=1;
                    }
                    break;
                case 28:
                    {
                    alt31=2;
                    }
                    break;
                case RULE_ID:
                    {
                    alt31=3;
                    }
                    break;

                }

                switch (alt31) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1263:2: (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1263:2: (otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';' )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1263:4: otherlv_5= 'actor' ( (lv_children_6_0= ruleActorDeclaration ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )* otherlv_9= ';'
            	    {
            	    otherlv_5=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleFullModel2659); 

            	        	newLeafNode(otherlv_5, grammarAccess.getFullModelAccess().getActorKeyword_4_0_0());
            	        
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1267:1: ( (lv_children_6_0= ruleActorDeclaration ) )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1268:1: (lv_children_6_0= ruleActorDeclaration )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1268:1: (lv_children_6_0= ruleActorDeclaration )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1269:3: lv_children_6_0= ruleActorDeclaration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFullModelAccess().getChildrenActorDeclarationParserRuleCall_4_0_1_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleActorDeclaration_in_ruleFullModel2680);
            	    lv_children_6_0=ruleActorDeclaration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFullModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_6_0, 
            	            		"ActorDeclaration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1285:2: (otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) ) )*
            	    loop29:
            	    do {
            	        int alt29=2;
            	        int LA29_0 = input.LA(1);

            	        if ( (LA29_0==27) ) {
            	            alt29=1;
            	        }


            	        switch (alt29) {
            	    	case 1 :
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1285:4: otherlv_7= ',' ( (lv_children_8_0= ruleActorDeclaration ) )
            	    	    {
            	    	    otherlv_7=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleFullModel2693); 

            	    	        	newLeafNode(otherlv_7, grammarAccess.getFullModelAccess().getCommaKeyword_4_0_2_0());
            	    	        
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1289:1: ( (lv_children_8_0= ruleActorDeclaration ) )
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1290:1: (lv_children_8_0= ruleActorDeclaration )
            	    	    {
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1290:1: (lv_children_8_0= ruleActorDeclaration )
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1291:3: lv_children_8_0= ruleActorDeclaration
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getFullModelAccess().getChildrenActorDeclarationParserRuleCall_4_0_2_1_0()); 
            	    	    	    
            	    	    pushFollow(FollowSets000.FOLLOW_ruleActorDeclaration_in_ruleFullModel2714);
            	    	    lv_children_8_0=ruleActorDeclaration();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getFullModelRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"children",
            	    	            		lv_children_8_0, 
            	    	            		"ActorDeclaration");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop29;
            	        }
            	    } while (true);

            	    otherlv_9=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFullModel2728); 

            	        	newLeafNode(otherlv_9, grammarAccess.getFullModelAccess().getSemicolonKeyword_4_0_3());
            	        

            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1312:6: (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1312:6: (otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';' )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1312:8: otherlv_10= 'goal' ( (lv_children_11_0= ruleGoalDeclaration ) ) (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )* otherlv_14= ';'
            	    {
            	    otherlv_10=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleFullModel2748); 

            	        	newLeafNode(otherlv_10, grammarAccess.getFullModelAccess().getGoalKeyword_4_1_0());
            	        
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1316:1: ( (lv_children_11_0= ruleGoalDeclaration ) )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1317:1: (lv_children_11_0= ruleGoalDeclaration )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1317:1: (lv_children_11_0= ruleGoalDeclaration )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1318:3: lv_children_11_0= ruleGoalDeclaration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFullModelAccess().getChildrenGoalDeclarationParserRuleCall_4_1_1_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleGoalDeclaration_in_ruleFullModel2769);
            	    lv_children_11_0=ruleGoalDeclaration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFullModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_11_0, 
            	            		"GoalDeclaration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1334:2: (otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) ) )*
            	    loop30:
            	    do {
            	        int alt30=2;
            	        int LA30_0 = input.LA(1);

            	        if ( (LA30_0==27) ) {
            	            alt30=1;
            	        }


            	        switch (alt30) {
            	    	case 1 :
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1334:4: otherlv_12= ',' ( (lv_children_13_0= ruleGoalDeclaration ) )
            	    	    {
            	    	    otherlv_12=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleFullModel2782); 

            	    	        	newLeafNode(otherlv_12, grammarAccess.getFullModelAccess().getCommaKeyword_4_1_2_0());
            	    	        
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1338:1: ( (lv_children_13_0= ruleGoalDeclaration ) )
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1339:1: (lv_children_13_0= ruleGoalDeclaration )
            	    	    {
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1339:1: (lv_children_13_0= ruleGoalDeclaration )
            	    	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1340:3: lv_children_13_0= ruleGoalDeclaration
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getFullModelAccess().getChildrenGoalDeclarationParserRuleCall_4_1_2_1_0()); 
            	    	    	    
            	    	    pushFollow(FollowSets000.FOLLOW_ruleGoalDeclaration_in_ruleFullModel2803);
            	    	    lv_children_13_0=ruleGoalDeclaration();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getFullModelRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"children",
            	    	            		lv_children_13_0, 
            	    	            		"GoalDeclaration");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop30;
            	        }
            	    } while (true);

            	    otherlv_14=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFullModel2817); 

            	        	newLeafNode(otherlv_14, grammarAccess.getFullModelAccess().getSemicolonKeyword_4_1_3());
            	        

            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1361:6: ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1361:6: ( ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';' )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1361:7: ( (lv_children_15_0= ruleRelationDeclaration ) ) otherlv_16= ';'
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1361:7: ( (lv_children_15_0= ruleRelationDeclaration ) )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1362:1: (lv_children_15_0= ruleRelationDeclaration )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1362:1: (lv_children_15_0= ruleRelationDeclaration )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1363:3: lv_children_15_0= ruleRelationDeclaration
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFullModelAccess().getChildrenRelationDeclarationParserRuleCall_4_2_0_0()); 
            	    	    
            	    pushFollow(FollowSets000.FOLLOW_ruleRelationDeclaration_in_ruleFullModel2846);
            	    lv_children_15_0=ruleRelationDeclaration();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFullModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"children",
            	            		lv_children_15_0, 
            	            		"RelationDeclaration");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    otherlv_16=(Token)match(input,12,FollowSets000.FOLLOW_12_in_ruleFullModel2858); 

            	        	newLeafNode(otherlv_16, grammarAccess.getFullModelAccess().getSemicolonKeyword_4_2_1());
            	        

            	    }


            	    }
            	    break;

            	default :
            	    break loop31;
                }
            } while (true);

            otherlv_17=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleFullModel2873); 

                	newLeafNode(otherlv_17, grammarAccess.getFullModelAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFullModel"


    // $ANTLR start "entryRuleGoalDeclaration"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1395:1: entryRuleGoalDeclaration returns [EObject current=null] : iv_ruleGoalDeclaration= ruleGoalDeclaration EOF ;
    public final EObject entryRuleGoalDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGoalDeclaration = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1396:2: (iv_ruleGoalDeclaration= ruleGoalDeclaration EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1397:2: iv_ruleGoalDeclaration= ruleGoalDeclaration EOF
            {
             newCompositeNode(grammarAccess.getGoalDeclarationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleGoalDeclaration_in_entryRuleGoalDeclaration2909);
            iv_ruleGoalDeclaration=ruleGoalDeclaration();

            state._fsp--;

             current =iv_ruleGoalDeclaration; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGoalDeclaration2919); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGoalDeclaration"


    // $ANTLR start "ruleGoalDeclaration"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1404:1: ruleGoalDeclaration returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' ) | (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) ) )? ) ;
    public final EObject ruleGoalDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_text_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_text_6_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1407:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' ) | (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) ) )? ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1408:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' ) | (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) ) )? )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1408:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' ) | (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) ) )? )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1408:2: ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' ) | (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) ) )?
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1408:2: ( (lv_name_0_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1409:1: (lv_name_0_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1409:1: (lv_name_0_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1410:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleGoalDeclaration2961); 

            			newLeafNode(lv_name_0_0, grammarAccess.getGoalDeclarationAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getGoalDeclarationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1426:2: ( (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' ) | (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) ) )?
            int alt32=3;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==19) ) {
                alt32=1;
            }
            else if ( (LA32_0==17) ) {
                alt32=2;
            }
            switch (alt32) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1426:3: (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1426:3: (otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}' )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1426:5: otherlv_1= '{' otherlv_2= 'text' ( (lv_text_3_0= RULE_STRING ) ) otherlv_4= '}'
                    {
                    otherlv_1=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleGoalDeclaration2980); 

                        	newLeafNode(otherlv_1, grammarAccess.getGoalDeclarationAccess().getLeftCurlyBracketKeyword_1_0_0());
                        
                    otherlv_2=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleGoalDeclaration2992); 

                        	newLeafNode(otherlv_2, grammarAccess.getGoalDeclarationAccess().getTextKeyword_1_0_1());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1434:1: ( (lv_text_3_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1435:1: (lv_text_3_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1435:1: (lv_text_3_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1436:3: lv_text_3_0= RULE_STRING
                    {
                    lv_text_3_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleGoalDeclaration3009); 

                    			newLeafNode(lv_text_3_0, grammarAccess.getGoalDeclarationAccess().getTextSTRINGTerminalRuleCall_1_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getGoalDeclarationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_3_0, 
                            		"STRING");
                    	    

                    }


                    }

                    otherlv_4=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleGoalDeclaration3026); 

                        	newLeafNode(otherlv_4, grammarAccess.getGoalDeclarationAccess().getRightCurlyBracketKeyword_1_0_3());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1457:6: (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1457:6: (otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1457:8: otherlv_5= ':' ( (lv_text_6_0= RULE_STRING ) )
                    {
                    otherlv_5=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleGoalDeclaration3046); 

                        	newLeafNode(otherlv_5, grammarAccess.getGoalDeclarationAccess().getColonKeyword_1_1_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1461:1: ( (lv_text_6_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1462:1: (lv_text_6_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1462:1: (lv_text_6_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1463:3: lv_text_6_0= RULE_STRING
                    {
                    lv_text_6_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleGoalDeclaration3063); 

                    			newLeafNode(lv_text_6_0, grammarAccess.getGoalDeclarationAccess().getTextSTRINGTerminalRuleCall_1_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getGoalDeclarationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_6_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGoalDeclaration"


    // $ANTLR start "entryRuleActorDeclaration"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1487:1: entryRuleActorDeclaration returns [EObject current=null] : iv_ruleActorDeclaration= ruleActorDeclaration EOF ;
    public final EObject entryRuleActorDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActorDeclaration = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1488:2: (iv_ruleActorDeclaration= ruleActorDeclaration EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1489:2: iv_ruleActorDeclaration= ruleActorDeclaration EOF
            {
             newCompositeNode(grammarAccess.getActorDeclarationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleActorDeclaration_in_entryRuleActorDeclaration3107);
            iv_ruleActorDeclaration=ruleActorDeclaration();

            state._fsp--;

             current =iv_ruleActorDeclaration; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleActorDeclaration3117); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActorDeclaration"


    // $ANTLR start "ruleActorDeclaration"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1496:1: ruleActorDeclaration returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) ) )? ) ;
    public final EObject ruleActorDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_text_2_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1499:28: ( ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) ) )? ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1500:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) ) )? )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1500:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) ) )? )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1500:2: ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) ) )?
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1500:2: ( (lv_name_0_0= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1501:1: (lv_name_0_0= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1501:1: (lv_name_0_0= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1502:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleActorDeclaration3159); 

            			newLeafNode(lv_name_0_0, grammarAccess.getActorDeclarationAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getActorDeclarationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1518:2: (otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) ) )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==17) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1518:4: otherlv_1= ':' ( (lv_text_2_0= RULE_STRING ) )
                    {
                    otherlv_1=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleActorDeclaration3177); 

                        	newLeafNode(otherlv_1, grammarAccess.getActorDeclarationAccess().getColonKeyword_1_0());
                        
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1522:1: ( (lv_text_2_0= RULE_STRING ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1523:1: (lv_text_2_0= RULE_STRING )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1523:1: (lv_text_2_0= RULE_STRING )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1524:3: lv_text_2_0= RULE_STRING
                    {
                    lv_text_2_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleActorDeclaration3194); 

                    			newLeafNode(lv_text_2_0, grammarAccess.getActorDeclarationAccess().getTextSTRINGTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getActorDeclarationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"text",
                            		lv_text_2_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActorDeclaration"


    // $ANTLR start "entryRuleRelationDeclaration"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1548:1: entryRuleRelationDeclaration returns [EObject current=null] : iv_ruleRelationDeclaration= ruleRelationDeclaration EOF ;
    public final EObject entryRuleRelationDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRelationDeclaration = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1549:2: (iv_ruleRelationDeclaration= ruleRelationDeclaration EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1550:2: iv_ruleRelationDeclaration= ruleRelationDeclaration EOF
            {
             newCompositeNode(grammarAccess.getRelationDeclarationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleRelationDeclaration_in_entryRuleRelationDeclaration3237);
            iv_ruleRelationDeclaration=ruleRelationDeclaration();

            state._fsp--;

             current =iv_ruleRelationDeclaration; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRelationDeclaration3247); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRelationDeclaration"


    // $ANTLR start "ruleRelationDeclaration"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1557:1: ruleRelationDeclaration returns [EObject current=null] : (this_Decomposition_0= ruleDecomposition | this_Delegation_1= ruleDelegation | this_OwnRelation_2= ruleOwnRelation ) ;
    public final EObject ruleRelationDeclaration() throws RecognitionException {
        EObject current = null;

        EObject this_Decomposition_0 = null;

        EObject this_Delegation_1 = null;

        EObject this_OwnRelation_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1560:28: ( (this_Decomposition_0= ruleDecomposition | this_Delegation_1= ruleDelegation | this_OwnRelation_2= ruleOwnRelation ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1561:1: (this_Decomposition_0= ruleDecomposition | this_Delegation_1= ruleDelegation | this_OwnRelation_2= ruleOwnRelation )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1561:1: (this_Decomposition_0= ruleDecomposition | this_Delegation_1= ruleDelegation | this_OwnRelation_2= ruleOwnRelation )
            int alt34=3;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==RULE_ID) ) {
                switch ( input.LA(2) ) {
                case 17:
                    {
                    int LA34_2 = input.LA(3);

                    if ( (LA34_2==RULE_ID) ) {
                        switch ( input.LA(4) ) {
                        case 37:
                            {
                            alt34=2;
                            }
                            break;
                        case 38:
                            {
                            alt34=3;
                            }
                            break;
                        case 36:
                            {
                            alt34=1;
                            }
                            break;
                        default:
                            NoViableAltException nvae =
                                new NoViableAltException("", 34, 6, input);

                            throw nvae;
                        }

                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 34, 2, input);

                        throw nvae;
                    }
                    }
                    break;
                case 38:
                    {
                    alt34=3;
                    }
                    break;
                case 37:
                    {
                    alt34=2;
                    }
                    break;
                case 36:
                    {
                    alt34=1;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 34, 1, input);

                    throw nvae;
                }

            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1562:5: this_Decomposition_0= ruleDecomposition
                    {
                     
                            newCompositeNode(grammarAccess.getRelationDeclarationAccess().getDecompositionParserRuleCall_0()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleDecomposition_in_ruleRelationDeclaration3294);
                    this_Decomposition_0=ruleDecomposition();

                    state._fsp--;

                     
                            current = this_Decomposition_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1572:5: this_Delegation_1= ruleDelegation
                    {
                     
                            newCompositeNode(grammarAccess.getRelationDeclarationAccess().getDelegationParserRuleCall_1()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleDelegation_in_ruleRelationDeclaration3321);
                    this_Delegation_1=ruleDelegation();

                    state._fsp--;

                     
                            current = this_Delegation_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1582:5: this_OwnRelation_2= ruleOwnRelation
                    {
                     
                            newCompositeNode(grammarAccess.getRelationDeclarationAccess().getOwnRelationParserRuleCall_2()); 
                        
                    pushFollow(FollowSets000.FOLLOW_ruleOwnRelation_in_ruleRelationDeclaration3348);
                    this_OwnRelation_2=ruleOwnRelation();

                    state._fsp--;

                     
                            current = this_OwnRelation_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRelationDeclaration"


    // $ANTLR start "entryRuleDecomposition"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1598:1: entryRuleDecomposition returns [EObject current=null] : iv_ruleDecomposition= ruleDecomposition EOF ;
    public final EObject entryRuleDecomposition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecomposition = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1599:2: (iv_ruleDecomposition= ruleDecomposition EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1600:2: iv_ruleDecomposition= ruleDecomposition EOF
            {
             newCompositeNode(grammarAccess.getDecompositionRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleDecomposition_in_entryRuleDecomposition3383);
            iv_ruleDecomposition=ruleDecomposition();

            state._fsp--;

             current =iv_ruleDecomposition; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDecomposition3393); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecomposition"


    // $ANTLR start "ruleDecomposition"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1607:1: ruleDecomposition returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDECOMPOSE ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* ) ;
    public final EObject ruleDecomposition() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Enumerator lv_relType_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1610:28: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDECOMPOSE ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1611:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDECOMPOSE ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1611:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDECOMPOSE ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1611:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDECOMPOSE ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )*
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1611:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )?
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==RULE_ID) ) {
                int LA35_1 = input.LA(2);

                if ( (LA35_1==17) ) {
                    alt35=1;
                }
            }
            switch (alt35) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1611:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':'
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1611:3: ( (lv_name_0_0= RULE_ID ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1612:1: (lv_name_0_0= RULE_ID )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1612:1: (lv_name_0_0= RULE_ID )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1613:3: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDecomposition3436); 

                    			newLeafNode(lv_name_0_0, grammarAccess.getDecompositionAccess().getNameIDTerminalRuleCall_0_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDecompositionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_0_0, 
                            		"ID");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleDecomposition3453); 

                        	newLeafNode(otherlv_1, grammarAccess.getDecompositionAccess().getColonKeyword_0_1());
                        

                    }
                    break;

            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1633:3: ( (otherlv_2= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1634:1: (otherlv_2= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1634:1: (otherlv_2= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1635:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getDecompositionRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDecomposition3475); 

            		newLeafNode(otherlv_2, grammarAccess.getDecompositionAccess().getSourceGoalCrossReference_1_0()); 
            	

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1646:2: ( (lv_relType_3_0= ruleDECOMPOSE ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1647:1: (lv_relType_3_0= ruleDECOMPOSE )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1647:1: (lv_relType_3_0= ruleDECOMPOSE )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1648:3: lv_relType_3_0= ruleDECOMPOSE
            {
             
            	        newCompositeNode(grammarAccess.getDecompositionAccess().getRelTypeDECOMPOSEEnumRuleCall_2_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleDECOMPOSE_in_ruleDecomposition3496);
            lv_relType_3_0=ruleDECOMPOSE();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getDecompositionRule());
            	        }
                   		set(
                   			current, 
                   			"relType",
                    		lv_relType_3_0, 
                    		"DECOMPOSE");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1664:2: ( (otherlv_4= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1665:1: (otherlv_4= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1665:1: (otherlv_4= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1666:3: otherlv_4= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getDecompositionRule());
            	        }
                    
            otherlv_4=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDecomposition3516); 

            		newLeafNode(otherlv_4, grammarAccess.getDecompositionAccess().getTargetGoalCrossReference_3_0()); 
            	

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1677:2: (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )*
            loop36:
            do {
                int alt36=2;
                int LA36_0 = input.LA(1);

                if ( (LA36_0==27) ) {
                    int LA36_1 = input.LA(2);

                    if ( (LA36_1==RULE_ID) ) {
                        alt36=1;
                    }


                }


                switch (alt36) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1677:4: otherlv_5= ',' ( (otherlv_6= RULE_ID ) )
            	    {
            	    otherlv_5=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleDecomposition3529); 

            	        	newLeafNode(otherlv_5, grammarAccess.getDecompositionAccess().getCommaKeyword_4_0());
            	        
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1681:1: ( (otherlv_6= RULE_ID ) )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1682:1: (otherlv_6= RULE_ID )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1682:1: (otherlv_6= RULE_ID )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1683:3: otherlv_6= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getDecompositionRule());
            	    	        }
            	            
            	    otherlv_6=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDecomposition3549); 

            	    		newLeafNode(otherlv_6, grammarAccess.getDecompositionAccess().getTargetGoalCrossReference_4_1_0()); 
            	    	

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop36;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecomposition"


    // $ANTLR start "entryRuleOwnRelation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1702:1: entryRuleOwnRelation returns [EObject current=null] : iv_ruleOwnRelation= ruleOwnRelation EOF ;
    public final EObject entryRuleOwnRelation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOwnRelation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1703:2: (iv_ruleOwnRelation= ruleOwnRelation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1704:2: iv_ruleOwnRelation= ruleOwnRelation EOF
            {
             newCompositeNode(grammarAccess.getOwnRelationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleOwnRelation_in_entryRuleOwnRelation3587);
            iv_ruleOwnRelation=ruleOwnRelation();

            state._fsp--;

             current =iv_ruleOwnRelation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleOwnRelation3597); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOwnRelation"


    // $ANTLR start "ruleOwnRelation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1711:1: ruleOwnRelation returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleOWN ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* ) ;
    public final EObject ruleOwnRelation() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Enumerator lv_relType_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1714:28: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleOWN ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1715:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleOWN ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1715:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleOWN ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )* )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1715:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleOWN ) ) ( (otherlv_4= RULE_ID ) ) (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )*
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1715:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==RULE_ID) ) {
                int LA37_1 = input.LA(2);

                if ( (LA37_1==17) ) {
                    alt37=1;
                }
            }
            switch (alt37) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1715:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':'
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1715:3: ( (lv_name_0_0= RULE_ID ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1716:1: (lv_name_0_0= RULE_ID )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1716:1: (lv_name_0_0= RULE_ID )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1717:3: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleOwnRelation3640); 

                    			newLeafNode(lv_name_0_0, grammarAccess.getOwnRelationAccess().getNameIDTerminalRuleCall_0_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getOwnRelationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_0_0, 
                            		"ID");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleOwnRelation3657); 

                        	newLeafNode(otherlv_1, grammarAccess.getOwnRelationAccess().getColonKeyword_0_1());
                        

                    }
                    break;

            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1737:3: ( (otherlv_2= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1738:1: (otherlv_2= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1738:1: (otherlv_2= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1739:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getOwnRelationRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleOwnRelation3679); 

            		newLeafNode(otherlv_2, grammarAccess.getOwnRelationAccess().getSourceActorCrossReference_1_0()); 
            	

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1750:2: ( (lv_relType_3_0= ruleOWN ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1751:1: (lv_relType_3_0= ruleOWN )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1751:1: (lv_relType_3_0= ruleOWN )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1752:3: lv_relType_3_0= ruleOWN
            {
             
            	        newCompositeNode(grammarAccess.getOwnRelationAccess().getRelTypeOWNEnumRuleCall_2_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleOWN_in_ruleOwnRelation3700);
            lv_relType_3_0=ruleOWN();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getOwnRelationRule());
            	        }
                   		set(
                   			current, 
                   			"relType",
                    		lv_relType_3_0, 
                    		"OWN");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1768:2: ( (otherlv_4= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1769:1: (otherlv_4= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1769:1: (otherlv_4= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1770:3: otherlv_4= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getOwnRelationRule());
            	        }
                    
            otherlv_4=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleOwnRelation3720); 

            		newLeafNode(otherlv_4, grammarAccess.getOwnRelationAccess().getTargetGoalCrossReference_3_0()); 
            	

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1781:2: (otherlv_5= ',' ( (otherlv_6= RULE_ID ) ) )*
            loop38:
            do {
                int alt38=2;
                int LA38_0 = input.LA(1);

                if ( (LA38_0==27) ) {
                    int LA38_1 = input.LA(2);

                    if ( (LA38_1==RULE_ID) ) {
                        alt38=1;
                    }


                }


                switch (alt38) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1781:4: otherlv_5= ',' ( (otherlv_6= RULE_ID ) )
            	    {
            	    otherlv_5=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleOwnRelation3733); 

            	        	newLeafNode(otherlv_5, grammarAccess.getOwnRelationAccess().getCommaKeyword_4_0());
            	        
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1785:1: ( (otherlv_6= RULE_ID ) )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1786:1: (otherlv_6= RULE_ID )
            	    {
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1786:1: (otherlv_6= RULE_ID )
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1787:3: otherlv_6= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getOwnRelationRule());
            	    	        }
            	            
            	    otherlv_6=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleOwnRelation3753); 

            	    		newLeafNode(otherlv_6, grammarAccess.getOwnRelationAccess().getTargetGoalCrossReference_4_1_0()); 
            	    	

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop38;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOwnRelation"


    // $ANTLR start "entryRuleDelegation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1806:1: entryRuleDelegation returns [EObject current=null] : iv_ruleDelegation= ruleDelegation EOF ;
    public final EObject entryRuleDelegation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDelegation = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1807:2: (iv_ruleDelegation= ruleDelegation EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1808:2: iv_ruleDelegation= ruleDelegation EOF
            {
             newCompositeNode(grammarAccess.getDelegationRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleDelegation_in_entryRuleDelegation3791);
            iv_ruleDelegation=ruleDelegation();

            state._fsp--;

             current =iv_ruleDelegation; 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDelegation3801); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDelegation"


    // $ANTLR start "ruleDelegation"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1815:1: ruleDelegation returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDELEGATE ) ) ( (otherlv_4= RULE_ID ) ) ) ;
    public final EObject ruleDelegation() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Enumerator lv_relType_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1818:28: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDELEGATE ) ) ( (otherlv_4= RULE_ID ) ) ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1819:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDELEGATE ) ) ( (otherlv_4= RULE_ID ) ) )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1819:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDELEGATE ) ) ( (otherlv_4= RULE_ID ) ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1819:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )? ( (otherlv_2= RULE_ID ) ) ( (lv_relType_3_0= ruleDELEGATE ) ) ( (otherlv_4= RULE_ID ) )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1819:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==RULE_ID) ) {
                int LA39_1 = input.LA(2);

                if ( (LA39_1==17) ) {
                    alt39=1;
                }
            }
            switch (alt39) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1819:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':'
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1819:3: ( (lv_name_0_0= RULE_ID ) )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1820:1: (lv_name_0_0= RULE_ID )
                    {
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1820:1: (lv_name_0_0= RULE_ID )
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1821:3: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDelegation3844); 

                    			newLeafNode(lv_name_0_0, grammarAccess.getDelegationAccess().getNameIDTerminalRuleCall_0_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDelegationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_0_0, 
                            		"ID");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleDelegation3861); 

                        	newLeafNode(otherlv_1, grammarAccess.getDelegationAccess().getColonKeyword_0_1());
                        

                    }
                    break;

            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1841:3: ( (otherlv_2= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1842:1: (otherlv_2= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1842:1: (otherlv_2= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1843:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getDelegationRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDelegation3883); 

            		newLeafNode(otherlv_2, grammarAccess.getDelegationAccess().getSourceGoalCrossReference_1_0()); 
            	

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1854:2: ( (lv_relType_3_0= ruleDELEGATE ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1855:1: (lv_relType_3_0= ruleDELEGATE )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1855:1: (lv_relType_3_0= ruleDELEGATE )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1856:3: lv_relType_3_0= ruleDELEGATE
            {
             
            	        newCompositeNode(grammarAccess.getDelegationAccess().getRelTypeDELEGATEEnumRuleCall_2_0()); 
            	    
            pushFollow(FollowSets000.FOLLOW_ruleDELEGATE_in_ruleDelegation3904);
            lv_relType_3_0=ruleDELEGATE();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getDelegationRule());
            	        }
                   		set(
                   			current, 
                   			"relType",
                    		lv_relType_3_0, 
                    		"DELEGATE");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1872:2: ( (otherlv_4= RULE_ID ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1873:1: (otherlv_4= RULE_ID )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1873:1: (otherlv_4= RULE_ID )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1874:3: otherlv_4= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getDelegationRule());
            	        }
                    
            otherlv_4=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDelegation3924); 

            		newLeafNode(otherlv_4, grammarAccess.getDelegationAccess().getTargetGoalCrossReference_3_0()); 
            	

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDelegation"


    // $ANTLR start "entryRuleQualifiedName"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1893:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1894:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1895:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName3961);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleQualifiedName3972); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1902:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1905:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1906:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1906:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1906:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleQualifiedName4012); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1913:1: (kw= '.' this_ID_2= RULE_ID )*
            loop40:
            do {
                int alt40=2;
                int LA40_0 = input.LA(1);

                if ( (LA40_0==34) ) {
                    alt40=1;
                }


                switch (alt40) {
            	case 1 :
            	    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1914:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleQualifiedName4031); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleQualifiedName4046); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop40;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleQualifiedNameWithWildCard"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1934:1: entryRuleQualifiedNameWithWildCard returns [String current=null] : iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF ;
    public final String entryRuleQualifiedNameWithWildCard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildCard = null;


        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1935:2: (iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1936:2: iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameWithWildCardRule()); 
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard4094);
            iv_ruleQualifiedNameWithWildCard=ruleQualifiedNameWithWildCard();

            state._fsp--;

             current =iv_ruleQualifiedNameWithWildCard.getText(); 
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard4105); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildCard"


    // $ANTLR start "ruleQualifiedNameWithWildCard"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1943:1: ruleQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildCard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1946:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1947:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1947:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1948:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    newCompositeNode(grammarAccess.getQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
                
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard4152);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    afterParserOrEnumRuleCall();
                
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1958:1: (kw= '.*' )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==35) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1959:2: kw= '.*'
                    {
                    kw=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleQualifiedNameWithWildCard4171); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getQualifiedNameWithWildCardAccess().getFullStopAsteriskKeyword_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildCard"


    // $ANTLR start "ruleDECOMPOSE"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1972:1: ruleDECOMPOSE returns [Enumerator current=null] : (enumLiteral_0= ':=' ) ;
    public final Enumerator ruleDECOMPOSE() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1974:28: ( (enumLiteral_0= ':=' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1975:1: (enumLiteral_0= ':=' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1975:1: (enumLiteral_0= ':=' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1975:3: enumLiteral_0= ':='
            {
            enumLiteral_0=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleDECOMPOSE4226); 

                    current = grammarAccess.getDECOMPOSEAccess().getDECOMPOSEEnumLiteralDeclaration().getEnumLiteral().getInstance();
                    newLeafNode(enumLiteral_0, grammarAccess.getDECOMPOSEAccess().getDECOMPOSEEnumLiteralDeclaration()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDECOMPOSE"


    // $ANTLR start "ruleDELEGATE"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1985:1: ruleDELEGATE returns [Enumerator current=null] : (enumLiteral_0= '->' ) ;
    public final Enumerator ruleDELEGATE() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1987:28: ( (enumLiteral_0= '->' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1988:1: (enumLiteral_0= '->' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1988:1: (enumLiteral_0= '->' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1988:3: enumLiteral_0= '->'
            {
            enumLiteral_0=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDELEGATE4269); 

                    current = grammarAccess.getDELEGATEAccess().getDELEGATEEnumLiteralDeclaration().getEnumLiteral().getInstance();
                    newLeafNode(enumLiteral_0, grammarAccess.getDELEGATEAccess().getDELEGATEEnumLiteralDeclaration()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDELEGATE"


    // $ANTLR start "ruleOWN"
    // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:1998:1: ruleOWN returns [Enumerator current=null] : (enumLiteral_0= 'owns' ) ;
    public final Enumerator ruleOWN() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:2000:28: ( (enumLiteral_0= 'owns' ) )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:2001:1: (enumLiteral_0= 'owns' )
            {
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:2001:1: (enumLiteral_0= 'owns' )
            // ../ms.unicorn.xtext.dsl.eistar/src-gen/ms/unicorn/parser/antlr/internal/InternalEIstar.g:2001:3: enumLiteral_0= 'owns'
            {
            enumLiteral_0=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleOWN4312); 

                    current = grammarAccess.getOWNAccess().getOWNEnumLiteralDeclaration().getEnumLiteral().getInstance();
                    newLeafNode(enumLiteral_0, grammarAccess.getOWNAccess().getOWNEnumLiteralDeclaration()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOWN"

    // Delegated rules


 

    
    private static class FollowSets000 {
        public static final BitSet FOLLOW_ruleSituation_in_entryRuleSituation75 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSituation85 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_11_in_ruleSituation122 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleSituation143 = new BitSet(new long[]{0x0000000000001000L});
        public static final BitSet FOLLOW_12_in_ruleSituation155 = new BitSet(new long[]{0x000000008001E002L});
        public static final BitSet FOLLOW_ruleIncludeSituation_in_ruleSituation176 = new BitSet(new long[]{0x000000008001E002L});
        public static final BitSet FOLLOW_ruleImportNamespace_in_ruleSituation198 = new BitSet(new long[]{0x000000008001C002L});
        public static final BitSet FOLLOW_ruleModel_in_ruleSituation220 = new BitSet(new long[]{0x0000000080018002L});
        public static final BitSet FOLLOW_ruleModel_in_entryRuleModel257 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleModel267 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleRequirementModel_in_ruleModel314 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionModel_in_ruleModel341 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleIncludeSituation_in_entryRuleIncludeSituation376 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleIncludeSituation386 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_13_in_ruleIncludeSituation423 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleIncludeSituation440 = new BitSet(new long[]{0x0000000000001000L});
        public static final BitSet FOLLOW_12_in_ruleIncludeSituation457 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleImportNamespace_in_entryRuleImportNamespace493 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleImportNamespace503 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_14_in_ruleImportNamespace540 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_ruleImportNamespace561 = new BitSet(new long[]{0x0000000000001000L});
        public static final BitSet FOLLOW_12_in_ruleImportNamespace573 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionModel_in_entryRuleEvolutionModel609 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEvolutionModel619 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_15_in_ruleEvolutionModel656 = new BitSet(new long[]{0x0000000000010000L});
        public static final BitSet FOLLOW_16_in_ruleEvolutionModel668 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleEvolutionModel685 = new BitSet(new long[]{0x0000000000060000L});
        public static final BitSet FOLLOW_17_in_ruleEvolutionModel703 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleEvolutionModel720 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleEvolutionModel739 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleEvolutionModel759 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleEvolutionModel771 = new BitSet(new long[]{0x0000000000300000L});
        public static final BitSet FOLLOW_ruleEvolutionRule_in_ruleEvolutionModel792 = new BitSet(new long[]{0x0000000000300000L});
        public static final BitSet FOLLOW_20_in_ruleEvolutionModel805 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionRule_in_entryRuleEvolutionRule841 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEvolutionRule851 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_21_in_ruleEvolutionRule888 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleEvolutionRule905 = new BitSet(new long[]{0x0000000000060000L});
        public static final BitSet FOLLOW_17_in_ruleEvolutionRule923 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleEvolutionRule940 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleEvolutionRule959 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEvolutionRule982 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleEvolutionRule994 = new BitSet(new long[]{0x0000000000504000L});
        public static final BitSet FOLLOW_ruleImportNamespace_in_ruleEvolutionRule1015 = new BitSet(new long[]{0x0000000000504000L});
        public static final BitSet FOLLOW_ruleEvolutionBranch_in_ruleEvolutionRule1037 = new BitSet(new long[]{0x0000000000500000L});
        public static final BitSet FOLLOW_20_in_ruleEvolutionRule1050 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionBranch_in_entryRuleEvolutionBranch1086 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEvolutionBranch1096 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_22_in_ruleEvolutionBranch1133 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleEvolutionBranch1150 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleEvolutionBranch1167 = new BitSet(new long[]{0x0000000000000040L});
        public static final BitSet FOLLOW_RULE_INT_in_ruleEvolutionBranch1184 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleEvolutionBranch1201 = new BitSet(new long[]{0x0000000063100000L});
        public static final BitSet FOLLOW_ruleEvolutionOperation_in_ruleEvolutionBranch1222 = new BitSet(new long[]{0x0000000063100000L});
        public static final BitSet FOLLOW_20_in_ruleEvolutionBranch1235 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionOperation_in_entryRuleEvolutionOperation1271 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEvolutionOperation1281 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionAddOperation_in_ruleEvolutionOperation1329 = new BitSet(new long[]{0x0000000000001000L});
        public static final BitSet FOLLOW_ruleEvolutionRemoveOperation_in_ruleEvolutionOperation1356 = new BitSet(new long[]{0x0000000000001000L});
        public static final BitSet FOLLOW_12_in_ruleEvolutionOperation1368 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEvolutionAddOperation_in_entryRuleEvolutionAddOperation1404 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEvolutionAddOperation1414 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_24_in_ruleEvolutionAddOperation1452 = new BitSet(new long[]{0x0000000014000020L});
        public static final BitSet FOLLOW_25_in_ruleEvolutionAddOperation1470 = new BitSet(new long[]{0x0000000014000020L});
        public static final BitSet FOLLOW_26_in_ruleEvolutionAddOperation1485 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleActorDeclaration_in_ruleEvolutionAddOperation1506 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_27_in_ruleEvolutionAddOperation1519 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleActorDeclaration_in_ruleEvolutionAddOperation1540 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_28_in_ruleEvolutionAddOperation1562 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleGoalDeclaration_in_ruleEvolutionAddOperation1583 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_27_in_ruleEvolutionAddOperation1596 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleGoalDeclaration_in_ruleEvolutionAddOperation1617 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleRelationDeclaration_in_ruleEvolutionAddOperation1648 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_27_in_ruleEvolutionAddOperation1661 = new BitSet(new long[]{0x0000000014000020L});
        public static final BitSet FOLLOW_ruleRelationDeclaration_in_ruleEvolutionAddOperation1682 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleEvolutionRemoveOperation_in_entryRuleEvolutionRemoveOperation1722 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEvolutionRemoveOperation1732 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_29_in_ruleEvolutionRemoveOperation1770 = new BitSet(new long[]{0x0000000014000020L});
        public static final BitSet FOLLOW_30_in_ruleEvolutionRemoveOperation1788 = new BitSet(new long[]{0x0000000014000020L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEvolutionRemoveOperation1813 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleRelationDeclaration_in_ruleEvolutionRemoveOperation1840 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_27_in_ruleEvolutionRemoveOperation1854 = new BitSet(new long[]{0x0000000014000020L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEvolutionRemoveOperation1878 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleRelationDeclaration_in_ruleEvolutionRemoveOperation1905 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleRequirementModel_in_entryRuleRequirementModel1944 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleRequirementModel1954 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFullModel_in_ruleRequirementModel2001 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSubModel_in_ruleRequirementModel2028 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSubModel_in_entryRuleSubModel2063 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSubModel2073 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_31_in_ruleSubModel2110 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleSubModel2127 = new BitSet(new long[]{0x0000000000060000L});
        public static final BitSet FOLLOW_17_in_ruleSubModel2145 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleSubModel2162 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleSubModel2181 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleSubModel2201 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleSubModel2213 = new BitSet(new long[]{0x0000000000106000L});
        public static final BitSet FOLLOW_ruleImportNamespace_in_ruleSubModel2234 = new BitSet(new long[]{0x0000000000106000L});
        public static final BitSet FOLLOW_13_in_ruleSubModel2248 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleSubModelInclusion_in_ruleSubModel2269 = new BitSet(new long[]{0x0000000008001000L});
        public static final BitSet FOLLOW_27_in_ruleSubModel2282 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleSubModelInclusion_in_ruleSubModel2303 = new BitSet(new long[]{0x0000000008001000L});
        public static final BitSet FOLLOW_12_in_ruleSubModel2317 = new BitSet(new long[]{0x0000000000102000L});
        public static final BitSet FOLLOW_20_in_ruleSubModel2331 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSubModelInclusion_in_entryRuleSubModelInclusion2367 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSubModelInclusion2377 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleSubModelInclusion2425 = new BitSet(new long[]{0x0000000102000002L});
        public static final BitSet FOLLOW_32_in_ruleSubModelInclusion2445 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_25_in_ruleSubModelInclusion2474 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleFullModel_in_entryRuleFullModel2527 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleFullModel2537 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_16_in_ruleFullModel2574 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleFullModel2591 = new BitSet(new long[]{0x00000000000A0000L});
        public static final BitSet FOLLOW_17_in_ruleFullModel2609 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleFullModel2626 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleFullModel2645 = new BitSet(new long[]{0x0000000014100020L});
        public static final BitSet FOLLOW_26_in_ruleFullModel2659 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleActorDeclaration_in_ruleFullModel2680 = new BitSet(new long[]{0x0000000008001000L});
        public static final BitSet FOLLOW_27_in_ruleFullModel2693 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleActorDeclaration_in_ruleFullModel2714 = new BitSet(new long[]{0x0000000008001000L});
        public static final BitSet FOLLOW_12_in_ruleFullModel2728 = new BitSet(new long[]{0x0000000014100020L});
        public static final BitSet FOLLOW_28_in_ruleFullModel2748 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleGoalDeclaration_in_ruleFullModel2769 = new BitSet(new long[]{0x0000000008001000L});
        public static final BitSet FOLLOW_27_in_ruleFullModel2782 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleGoalDeclaration_in_ruleFullModel2803 = new BitSet(new long[]{0x0000000008001000L});
        public static final BitSet FOLLOW_12_in_ruleFullModel2817 = new BitSet(new long[]{0x0000000014100020L});
        public static final BitSet FOLLOW_ruleRelationDeclaration_in_ruleFullModel2846 = new BitSet(new long[]{0x0000000000001000L});
        public static final BitSet FOLLOW_12_in_ruleFullModel2858 = new BitSet(new long[]{0x0000000014100020L});
        public static final BitSet FOLLOW_20_in_ruleFullModel2873 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleGoalDeclaration_in_entryRuleGoalDeclaration2909 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleGoalDeclaration2919 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleGoalDeclaration2961 = new BitSet(new long[]{0x00000000000A0002L});
        public static final BitSet FOLLOW_19_in_ruleGoalDeclaration2980 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_33_in_ruleGoalDeclaration2992 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleGoalDeclaration3009 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleGoalDeclaration3026 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_17_in_ruleGoalDeclaration3046 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleGoalDeclaration3063 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleActorDeclaration_in_entryRuleActorDeclaration3107 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleActorDeclaration3117 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleActorDeclaration3159 = new BitSet(new long[]{0x0000000000020002L});
        public static final BitSet FOLLOW_17_in_ruleActorDeclaration3177 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleActorDeclaration3194 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleRelationDeclaration_in_entryRuleRelationDeclaration3237 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleRelationDeclaration3247 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDecomposition_in_ruleRelationDeclaration3294 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDelegation_in_ruleRelationDeclaration3321 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleOwnRelation_in_ruleRelationDeclaration3348 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDecomposition_in_entryRuleDecomposition3383 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDecomposition3393 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDecomposition3436 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleDecomposition3453 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDecomposition3475 = new BitSet(new long[]{0x0000001000000000L});
        public static final BitSet FOLLOW_ruleDECOMPOSE_in_ruleDecomposition3496 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDecomposition3516 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_27_in_ruleDecomposition3529 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDecomposition3549 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleOwnRelation_in_entryRuleOwnRelation3587 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleOwnRelation3597 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleOwnRelation3640 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleOwnRelation3657 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleOwnRelation3679 = new BitSet(new long[]{0x0000004000000000L});
        public static final BitSet FOLLOW_ruleOWN_in_ruleOwnRelation3700 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleOwnRelation3720 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_27_in_ruleOwnRelation3733 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleOwnRelation3753 = new BitSet(new long[]{0x0000000008000002L});
        public static final BitSet FOLLOW_ruleDelegation_in_entryRuleDelegation3791 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDelegation3801 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDelegation3844 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleDelegation3861 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDelegation3883 = new BitSet(new long[]{0x0000002000000000L});
        public static final BitSet FOLLOW_ruleDELEGATE_in_ruleDelegation3904 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDelegation3924 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName3961 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName3972 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName4012 = new BitSet(new long[]{0x0000000400000002L});
        public static final BitSet FOLLOW_34_in_ruleQualifiedName4031 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName4046 = new BitSet(new long[]{0x0000000400000002L});
        public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard4094 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard4105 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard4152 = new BitSet(new long[]{0x0000000800000002L});
        public static final BitSet FOLLOW_35_in_ruleQualifiedNameWithWildCard4171 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_36_in_ruleDECOMPOSE4226 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_37_in_ruleDELEGATE4269 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_38_in_ruleOWN4312 = new BitSet(new long[]{0x0000000000000002L});
    }


}